package com.itheima.quartjob;

import com.itheima.constant.RedisConstant;
import com.itheima.utils.QiNiuUtil;
import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.JedisPool;

import java.util.Set;

public class QuartClearPicJob {

    @Autowired
    private JedisPool jedisPool;

    public void clearPicJob(){
        //求redis中存储图片的 两个set集合中不同部分，（大集合）-（小集合）
        Set<String> picNames = jedisPool.getResource().sdiff(RedisConstant.SETMEAL_PIC_RESOURCES, RedisConstant.SETMEAL_PIC_DB_RESOURCES);
        //判断集合不为空

        if (picNames != null){
            //遍历集合，
            for (String picName : picNames) {
                //从七牛中删除垃圾的文件
                QiNiuUtil.deleteFileFromQiniu(picName);
                //从redis中一一删除
                jedisPool.getResource().srem(RedisConstant.SETMEAL_PIC_RESOURCES,picName);

                System.out.println("定期清理垃圾的圖片：" + picName);
            }

        }
        //剩余相同部分也可以进行删除 --> 相同的图片存储过多也会占用大量内存空间
        Set<String> sinter = jedisPool.getResource().sinter(RedisConstant.SETMEAL_PIC_RESOURCES, RedisConstant.SETMEAL_PIC_DB_RESOURCES);
        if (sinter!=null){
            for (String picName : sinter) {
                jedisPool.getResource().srem(RedisConstant.SETMEAL_PIC_RESOURCES,picName);
                jedisPool.getResource().srem(RedisConstant.SETMEAL_PIC_DB_RESOURCES,picName);
                System.out.println("定期清理非垃圾的圖片");
            }

        }

        ////根据Redis中保存的两个set集合进行差值计算，获得垃圾图片名称集合
        //        Set<String> set = jedisPool.getResource().sdiff(RedisConstant.SETMEAL_PIC_RESOURCES, RedisConstant.SETMEAL_PIC_DB_RESOURCES);
        //        if(set != null){
        //            for (String picName : set) {
        //                //删除七牛云服务器上的图片
        //                QiniuUtils.deleteFileFromQiniu(picName);
        //                //从Redis集合中删除图片名称
        //                jedisPool.getResource().srem(RedisConstant.SETMEAL_PIC_RESOURCES,picName);
        //                System.out.println("自定义任务执行，清理垃圾图片:" + picName);
        //            }
        //        }


    }
}